/**
 * Created by liupan on 2017-3-8.
 * 模板配置界面js
 * 对应JSP为template.jsp
 */
define(["require", "jquery", "public/app"], function (require, $, app) {

    function Icons($container) {
        this._$container = $container;
        this._init();
    }

    Icons.prototype._initUrlPath = function () {
        this.urlPaths = {
            IconsData: app.urlBuild("/dirms/monitor/icons/all"),
            SaveIcons: app.urlBuild("/dirms/monitor/icons/save"),
            QueryByName: app.urlBuild("/dirms/monitor/queryByName/"),
            iconAddJsp: app.urlBuild("/pages/app/config/iconsAdd.jsp")
        }
    };

    Icons.prototype._init = function () {
        this._initUrlPath();
        var self = this;
        var dataReady = app.getDataReady();

        dataReady.pushDataSource({//逐个放入所有数据源
            url: this.urlPaths.IconsData,
            key: 'IconsData'
        });

        dataReady.once(function (readyData) {
            self._initComponents(readyData);
        });
    };

    Icons.prototype._initComponents = function (readyData) {
        //初始化控件
        this._initIconsGrid(readyData);//初始化用户表格
        this._initEventBinding(this);//初始化事件绑定
        this._initSearch();//初始化搜索
    };

    var IconsGrid;
    Icons.prototype._initSearch = function () {
        var self = this;
        //主表格搜索框
        $('#searchMenu').searchbox({
            //搜索功能未完成，应按照用户、角色、组织机构三类来进行搜索
            searcher: function (value, name) {
                if(name == 'name' && value != ""){
                    $.ajax({
                        type: "POST",
                        url: self.urlPaths.QueryByName + value,
                        success:function(data){
                            if(data == ""||data == null){alert(value+" 图标不存在");}
                            else{
                                $('#iconsGrid').datagrid('loadData',data);
                                $('#searchMenu').searchbox('clear');
                            }
                        },
                        error:function(){alert("查询错误");}
                    });
                }
                // else{
                //     $('#_UserGrid').datagrid('reload');
                // }
            },
            menu: '#search',
            prompt: '请输入关键字'
        });
    };
    //初始化表格
    Icons.prototype._initIconsGrid = function (readyData) {
        //主页面用户信息表格
        IconsGrid=$('#iconsGrid').datagrid({
            rownumbers: true,
            pagination: true,
            singleSelect: true,
            // fitColumns: true,
            // url: this.urlPaths.TemplateData,
            data: readyData.IconsData.data,
            method: 'get',
            title: '',
            width: 'auto',
            height: '100%',
            region: 'south',
            //对应model层字段
            columns: [[
                {field:'id',title:"编号",width: '100'},
                {field: 'name', title: '名称', width: '200', formatter: function (value, row, index) {
                        return '<img src="'+app.getDeviceImgPath() + row.name + '" />';
                    }
                },
            ]],
            toolbar: this._$container.find("#Toolbar"),
        });
    };

        /**
         * 事件绑定
         */
        Icons.prototype._initEventBinding = function (self) {
            //【todo 在此编写绑定事件的方法。如按钮需要绑定的click事件。建议按如下格式绑定，并将this作为参数传入】
            this._$container.find('#addicons_btn').on('click', {self: this}, this._actions.addiconsClick);
            this._$container.find('#deleteicons_btn').on('click', {self: this}, this._actions.deleteiconsClick);
        };


        /**
         * 在此定义此js用到的事件处理方法。如处理按钮click事件的方法
         * @type {{btcClick: Function}}
         */
        Icons.prototype._actions = {
            //模板编辑按钮事件
            addiconsClick: function(evt){
                showIconsDialog(evt);
            },
            deleteiconsClick: function (evt) {
                var row = $("#iconsGrid").datagrid('getSelections');
                if (row < 1) {
                    //1-1.如果没有任何一行选中 则提示
                    $.messager.alert("提示","请选择要操作的对象！", 'warning');
                    return;
                }else if(row.length>1){
                    $.messager.alert('提示',"只能选择单条记录",'info');
                    return;
                }
                $.messager.confirm("用户数据删除","您确定要删除吗？", function(r) {
                    if (r) {
                        /* if(row.length!=undefined){
                         for(var i=0;i<row.length;i++){
                         userIds.push(row[i].user_id);
                         }
                         }
                         var ids=userIds.join(",");*/
                        var url = evt.data.self.urlPaths.DelUserData+row[0].id;
                        $.ajax({
                            type:"DELETE",
                            url:url,
                            data:{"id":row[0].id},
                            dataType:"json",
                            success:function(data){
                                alert(1);
                                $("#iconsGrid").datagrid('reload');//重新加载列表数据
                                $.messager.alert('提示','删除图标成功!','info');
                            },
                            error:function(event, XMLHttpRequest, ajaxOptions, thrownError){
                                $.messager.alert('提示','删除图标失败!','info');
                            }
                        });
                    }
                });
            }
        };

        /**
         *
         * @param evt 点击时间
         * @param row  行记录数据
         */
        var showIconsDialog = function(evt){
            var inputUrl = evt.data.self.urlPaths.iconAddJsp;
            var title="新增图标";
            //对话框
            var iconsAdddialog = $('<div id="icons-add"/>').dialog({
                title : title,
                top:100,
                width : 500,
                /*          height : 360,*/
                modal : true, //模式窗口：窗口背景不可操作
                resizable : false, //可拖动边框大小
                plain : true,
                href : inputUrl,
                buttons : [ {
                    text : '确定',
                    iconCls : 'icon-ok',
                    plain : true,
                    handler : function() {
                        var iconValue = $("#icons-fb").filebox('getValue');

                        if (iconValue == '') {
                            $.messager.alert('提示','请选择图片类型文件！','info');
                            return;
                        }
                        // 判断文件类型
                        var imageTypeArr = [ 'jpg', 'bmp', 'jpeg', 'gif', 'png' ];
                        var imageType = iconValue.substring(iconValue.lastIndexOf('.'), iconValue.length);
                        if (!$.inArray(imageType, imageTypeArr)) {
                            $.messager.alert('提示','请重新选择图片类型文件！','info');
                            return;
                        }

                        var tmp = iconValue.split('/');
                        if (tmp.length < 2) {
                            tmp = iconValue.split('\\');
                            if (tmp.length < 2) {
                                $.messager.alert('提示','请重新选择图片类型文件！','info');
                                return;
                            }
                        }
                        var imageName = tmp[tmp.length-1];
                        var imagePath = iconValue;

                        $.ajax({
                            url:evt.data.self.urlPaths.UpdateTemplateData,
                            type:"POST",
                            cache:false,
                            contentType: "application/json",
                            async : false,
                            dataType: "json",
                            data : templateData,
                            beforeSend:function(XMLHttpRequest){
                                $.messager.progress({
                                    title : '提示信息！',
                                    text : '数据处理中，请稍后....'
                                });
                            },
                            success: function(data){
                                $.messager.progress('close');
                                if(typeof(data) != "undefined" && data !=null && data!=''){
                                    $.messager.alert('提示','保存成功！','info');
                                    $("#iconsGrid").datagrid('reload');//重新加载列表数据
                                    $("#template-edit").dialog('destroy');//销毁对话框
                                }
                            },
                            error: function (event, XMLHttpRequest, ajaxOptions, thrownError) {
                                $.messager.progress('close');
                                $.messager.alert('提示','数据保存失败！','info')
                            }
                        });
                    }
                }, {
                    text : '取消',
                    iconCls : 'icon-cancel',
                    plain : true,
                    handler : function() {
                        $("#icons-add").dialog('destroy');//销毁对话框
                    }
                } ],
                onClose : function() {
                    $(this).dialog('destroy');
                },
                onLoad : function() {
                    //编辑
                    $('#icons-fb').filebox({
                        required : true,
                        width : '300px',
                        // multiple : true,
                        // validType : ['fileSize[1024,"kb"]' ],
                        buttonText : '选择文件',
                        buttonAlign : 'right',
                        prompt : '请选择一个图片类型的文件',
                        accept : [ 'image/jpg', 'image/bmp', 'image/jpeg', 'image/gif', 'image/png' ]
                    });
                }
            }).dialog('open');
        };

        return Icons;
    });
